package com.ys.day27.p1线程池;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

/**
 * 描述:
 * 可控最大并发数线程池(newFixedThreadPool)、
 * @author CodeYang
 * @version 2021/1/6 11:24
 */
public class P2最大可控制的线程池化 {

    public static void main(String[] args) {
        /**
         * 创建100个线程的"池"
         *  创建多线程的线程池，参数表示线程池核心线程数量为100，这个数量在编译期固定，运行期不会再改变
         */
        ExecutorService es = Executors.newFixedThreadPool(100);

        for (int i = 0; i <1000 ; i++) {
            es.execute(new Runnable() {
                /**
                 * 线程任务
                 */
                @Override
                public void run() {
                    System.out.println(Thread.currentThread().getName()+"::::"+"启动");
                }
            });
        }

        es.shutdown();
        /**
         * 这样的固定数量的"池"技术,会把线程固定下来.空闲状态的线程会去执行任务,线程都使用了,
         * 其他任务就会进入阻塞队列 等待有线程空闲
         *
         * pool-1-thread-100::::启动
         * pool-1-thread-1::::启动
         * pool-1-thread-1::::启动
         * pool-1-thread-5::::启动
         * Disconnected from the target VM, address: '127.0.0.1:51563', transport: 'socket'
         * pool-1-thread-5::::启动
         * pool-1-thread-3::::启动
         * pool-1-thread-3::::启动
         * pool-1-thread-3::::启动
         * pool-1-thread-3::::启动
         * pool-1-thread-3::::启动
         * pool-1-thread-3::::启动
         * pool-1-thread-3::::启动
         * pool-1-thread-3::::启动
         * pool-1-thread-3::::启动
         * pool-1-thread-3::::启动
         */

    }
}
